home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
t_os
/
game
/
ponpon
/
ponpon4.bas
< prev
next >
Wrap
BASIC Source File
|
1995-08-18
|
41KB
|
928 lines
1000 '
1010 '飛んでけポンポン! by 尋燐・ルナ
1020 ' アバウト各局御用達
1030 ' V1.3 1994/10/19 初代TOWNS誌用
1040 ' V4.4 1995/06/23 フリコレ11用
1050 :
1060 CLEAR ,,,1500000 :'配列用にスペース開ける
1070 DEFSTR A :'以後Aで始まる変数は文字型
1080 :
1090 GOSUB *タイトル :WAIT 200 :'タイトル画面
1100 GOSUB *初期設定 :'各種設定
1110 GOSUB *WIND :'DATA読み込み窓
1120 GOSUB *D_LOAD :'得点データの読み込み
1130 GOSUB *D_LOAD2 :'名前データの読み込み
1140 GOSUB *効果音 :WAIT 100 :'音データ読み込み
1150 GOSUB *サブメニュー :'説明等のメニュー
1160 ON NO+1 GOTO 1220,1170,1180,1190,1200,1210
1170 :GOSUB *MENU2 :GOTO 1150 :'ポンポンについて
1180 :GOSUB *MENU3 :GOTO 1150 :'ゲームの説明
1190 :GOSUB *MENU4 :GOTO 1150 :'ガンの説明
1200 :GOSUB *MENU5 :GOTO 1150 :'速度について
1210 :F=1 :GOSUB *M_終了:GOTO *おわり :'終了
1220 GOSUB *速度設定 :'専用による速度設定
1230 SCREEN@ 0 :PALETTE :SCREEN 1,0,0,1 :'画面設定 背景作画/見せない
1240 GOSUB *その場 :'各種画像データのセット
1250 GOSUB *表示 :'スコア表示
1260 WHILE I=1
1270 CLS :WAIT 10:SCREEN 1,0,3,1 :'画面設定 背景をアクティブに
1280 GOSUB *各種背景 :'動かない物(背景)を描く
1290 SCREEN 1,1,3,1 :SCREEN@ 0 :CLS :'画面設定 前景をアクティブに
1300 GOSUB *各種前景 :'動く物の表示
1310 IF FGO THEN OUT &H5EC,0 :'TOWNS2の人は 互換モード
1320 GOSUB *開始 :'**ゲーム本体**
1330 IF FGO THEN OUT &H5EC,1 :'TOWNS2の人は 高速モード
1340 GOSUB *表示S :'スコア表示
1350 GOSUB *名前記入 :'ハイスコアなら名前登録
1360 GOSUB *表示 :'スコア表示 :(or 終了?)
1370 WEND :'もう一度するならジャンプ
1380 GOSUB *D_SAVE :'データの書き込み
1390 GOSUB *タイトル :'タイトル画面
1400 GOTO 1150 :'メニューに戻る
1410 :
1420 *おわり
1430 WAIT 200
1440 END
1450 :
1460 '=============== S U B ================
1470 *初期設定
1480 ANA="" :FF=1 :'0=QKS 1=QKR専用
1490 FM=0 :'OUTエリア表示
1500 FT=0 :'TESTモード
1510 FG=1 :'GAME番号
1520 FS=1 :'二段打ち
1530 FGO=0 :'互換モード
1540 AVOL="V4.4" :'バージョン
1550 ADD="" :AD="" :'データDrive
1560 KAISU=10 :'試技数
1570 RANDOMIZE TIME :'乱数の系列を変更
1580 DIM TEN(2),HI(21),ATEN(22) :'スコア /点数記録 /日時
1590 DIM HI2(21,2),ATEN2(22) :'G2用 /LEVEL・回数・Double /日時
1600 DIM YA(8000) :'弾*15個
1610 DIM HATA(18500) :'旗移動用
1620 DIM SYO(4400) :'照準表示用
1630 DIM TN(200) :'点数移動用
1640 DIM TIT(200) :'タイトル表示用
1650 DIM WIN(300) :'風表示用
1660 DIM PW(400) :'力表示用
1670 DIM AN(26) :'登録名 (A-Z)
1680 I=0 :S=0 :'汎用変数
1690 RETURN
1700 :
1710 '-----------------------------------
1720 *効果音 :'音データ読込
1730 ON ERROR GOTO *E_効果音
1740 X=X0 :Y=Y0 :X1=X+160 :Y1=Y+23 :GOSUB *K_SUB
1750 SYMBOL (X+5,Y+5),"効果音データの読込",1,1,5,,,1
1760 :
1770 DIM SND1(15000) :'弾飛んでいる時の音
1780 I=3 :A="henshin.snd" :GOSUB *K_SUB2
1790 IF AD="Q:" THEN A="\FJ2\SE\CARTOON\"+A
1800 LOAD@ AD+A,SND1
1810 DIM SND2(49000) :'拍手
1820 I=4 :A="applause.snd" :GOSUB *K_SUB2
1830 IF AD="Q:" THEN A="\FJ2\SE\PEOPLE\"+A
1840 LOAD@ AD+A,SND2
1850 DIM SND3(50000) :'強風
1860 I=5 :A="chilly_w.snd" :GOSUB *K_SUB2
1870 IF AD="Q:" THEN A="\FJ2\SE\NATURE\"+A
1880 LOAD@ AD+A,SND3
1890 DIM SND4(46000) :'笑い
1900 I=6 :A="laughter.snd" :GOSUB *K_SUB2
1910 IF AD="Q:" THEN A="\FJ2\SE\PEOPLE\"+A
1920 LOAD@ AD+A,SND4
1930 DIM SND5(51000) :'歓声
1940 I=7 :A="audi_1.snd" :GOSUB *K_SUB2
1950 IF AD="Q:" THEN A="\FJ2\SE\SPORTS\"+A
1960 LOAD@ AD+A,SND5
1970 DIM SND6(9000) :'割れる音
1980 I=8 :A="crack.snd" :GOSUB *K_SUB2
1990 IF AD="Q:" THEN A="\FJ2\SE\DOMESTIC\"+A
2000 LOAD@ AD+A,SND6
2010 DIM SND7(5000) :'お疲れ
2020 I=9 :A="otuka_f.snd" :GOSUB *K_SUB2
2030 IF AD="Q:" THEN A="\FJ2\MSG\GREETING\"+A
2040 LOAD@ AD+A,SND7
2050 DIM SND8(29000) :'日本CHA
2060 I=10 :A="jpncha.snd" :GOSUB *K_SUB2
2070 IF AD="Q:" THEN A="\FJ2\SE\SPORTS\"+A
2080 LOAD@ AD+A,SND8
2090 :
2100 DIM SND11(47000) :'ピーポー
2110 I=11 :A="ambulnce.snd" :GOSUB *K_SUB2
2120 IF AD="Q:" THEN A="\FJ2\SE\VEHICLE\"+A
2130 LOAD@ AD+A,SND11
2140 DIM SND12(3500) :'だめだめ
2150 I=12 :A="dameda_f.snd" :GOSUB *K_SUB2
2160 IF AD="Q:" THEN A="\FJ2\MSG\WARNING\"+A
2170 LOAD@ AD+A,SND12
2180 DIM SND13(3000) :'危ない
2190 I=13 :A="abunai_f.snd" :GOSUB *K_SUB2
2200 IF AD="Q:" THEN A="\FJ2\MSG\WARNING\"+A
2210 LOAD@ AD+A,SND13
2220 :
2230 AD="" :'--ドライブ指定をカレント換える/自作音
2240 DIM SND9(4000) :'GUN
2250 I=14 :A="gun.snd" :GOSUB *K_SUB2
2260 LOAD@ A,SND9
2270 DIM SND10(10000) :'GUN2
2280 I=15 :A="hit4.snd" :GOSUB *K_SUB2
2290 LOAD@ A,SND10
2300 AD=ADD :'--ドライブ指定を元に戻す
2310 ON ERROR GOTO 0
2320 I=0 :A="終了" :GOSUB *K_SUB2
2330 RETURN
2340 :
2350 '--------------
2360 *E_効果音 :'読込エラー
2370 GOSUB 2550
2380 DIM DMY(7000)
2390 X0=230 :Y0=160 :BEEP
2400 X=X0 :Y=Y0 :X1=X+210 :Y1=Y+120
2410 GET@A (X0-1,Y0-1)-(X1+1,Y1+1),DMY :GOSUB *K_SUB1
2420 X=X+10 :Y=Y+10 :X1=X+190 :Y1=Y+25 :GOSUB *K_SUB1
2430 SYMBOL (X+8,Y+4),"エラーが発生致しました",1,1,%108,,,1
2440 SYMBOL (X+130,Y+30),"err="+STR$(ERR),1,1,1
2450 SYMBOL (X+10,Y+40),"読み込み処理を",1,1,5,,,1
2460 SYMBOL (X+10,Y+60)," 継続する・・・実行",1,1,3,,,1
2470 SYMBOL (X+10,Y+80)," 中止する・・・取消",1,1,3,,,1
2480 CONNECT (X+30,Y+58)-(X+30,Y+100)-(X+170,Y+100)-(X+170,Y+47)-(X+125,Y+47),3
2490 A=INPUT$(1) :IF A<>CHR$(13) THEN 2600
2500 PUT@A (X0-1,Y0-1)-(X0+211,Y0+121),DMY :'エラーメッセージ
2510 ERASE DMY
2520 GOSUB 2550
2530 RESUME
2540 :
2550 '--- 変数退避 ---
2560 SWAP I0,X :SWAP I1,Y :SWAP I2,X0 :SWAP I3,Y0 :SWAP I4,X1 :SWAP I5,Y1
2570 SWAP A0,A
2580 RETURN
2590 :
2600 '--- エラー終了 ---
2610 F=0 :GOSUB *M_終了
2620 END
2630 :
2640 '------------------------------------読み込み窓を作る
2650 *WIND
2660 X0=100 :Y0=310
2670 X=X0-5 :Y=Y0-5 :X1=X+170 :Y1=Y+100 :GOSUB *K_SUB1
2680 X=X0 :Y=Y0 :X1=X+160 :Y1=Y+23 :GOSUB *K_SUB
2690 Y=Y+25 :X1=X+50 :Y1=Y+23 :GOSUB *K_SUB
2700 SYMBOL (X+5,Y+5),"Drive",1,1,5
2710 Y=Y+25 :X1=X+50 :Y1=Y+23 :GOSUB *K_SUB
2720 SYMBOL (X+5,Y+5),"File",1,1,5
2730 X=X0+52 :Y=Y0+25 :X1=X+108 :Y1=Y+23 :GOSUB *K_SUB
2740 X=X0+52 :Y=Y+25 :X1=X+108 :Y1=Y+23 :GOSUB *K_SUB
2750 FOR I=1 TO 15
2760 LINE (X0-2+I*10,Y0+80)-(X0+5+I*10,Y0+85),PSET,2,BF
2770 NEXT
2780 RETURN
2790 :
2800 *K_SUB1 :'窓表示
2810 LINE (X-1,Y-1)-(X1+1,Y1+1),PSET,0,B
2820 *K_SUB :'窓表示
2830 LINE (X,Y)-(X1,Y1),PSET,%200,BF
2840 LINE (X,Y)-(X1,Y1),PSET,0,B
2850 LINE (X+1,Y+1)-(X1-1,Y1-1),PSET,0,B
2860 CONNECT (X,Y1)-(X,Y)-(X1,Y),7
2870 CONNECT (X+1,Y1-1)-(X+1,Y+1)-(X1-1,Y+1),7
2880 RETURN
2890 :
2900 *K_SUB2 :'ゲージ表示
2910 X=X0+52 :Y=Y0+25 :X1=X+108 :Y1=Y+23 :GOSUB *K_SUB
2920 IF AD="" THEN A0="カレント"
2930 IF AD="Q:" THEN A0="CD"
2940 IF AD="A:" THEN A0="Aフロッピー"
2950 IF AD="B:" THEN A0="Bフロッピー"
2960 SYMBOL (X0+60,Y0+30),A0,1,1,0
2970 IF I=0 THEN 2990
2980 LINE (X0-2+I*10,Y0+80)-(X0+5+I*10,Y0+85),PSET,%156,BF
2990 X=X0+52 :Y=Y0+25+25 :X1=X+108 :Y1=Y+23 :GOSUB *K_SUB
3000 SYMBOL (X+5,Y+5),A,1,1,6
3010 RETURN
3020 :
3030 '--------------------------------------
3040 *D_LOAD :'データの読み込み
3050 X=X0 :Y=Y0 :X1=X+160 :Y1=Y+23 :GOSUB *K_SUB
3060 SYMBOL (X+5,Y+5),"得点DATAの読み込み",1,1,5,,,1
3070 I=1 :AD="" :A="PONPON.DAT" :GOSUB *K_SUB2
3080 ON ERROR GOTO 3250
3090 OPEN "I",#1,"PONPON.DAT"
3100 INPUT #1,A
3110 INPUT #1,A
3120 FOR I=1 TO 20 :'GAME1
3130 INPUT #1,HI(I) :LINE INPUT #1,ATEN(I)
3140 NEXT
3150 INPUT #1,A
3160 FOR I=1 TO 20 :'GAME2
3170 FOR I0=0 TO 2
3180 INPUT #1,HI2(I,I0)
3190 NEXT
3200 LINE INPUT #1,ATEN2(I)
3210 NEXT
3220 CLOSE
3230 ON ERROR GOTO 0
3240 RETURN
3250 IF ERR<>63 THEN PRINT ERR;"/";ERL :STOP :'Data Failが無いときは作る
3260 :
3270 '--読込エラー窓
3280 BEEP
3290 DIM DMY(4500)
3300 X=275 :Y=330 :X1=X+150 :Y1=Y+107
3310 GET@A (X-1,Y-1)-(X1+1,Y1+1),DMY :GOSUB *K_SUB1
3320 SYMBOL (X+10,Y+10),"得点データが",1,1,5,,,1
3330 SYMBOL (X+50,Y+30),"有りません!",1,1,5,,,1
3340 LINE (X+10,Y+50)-(X1-10,Y+50),PSET,1
3350 SYMBOL (X+10,Y+60),"新規に作成",1,1,3,,,1
3360 SYMBOL (X+50,Y+80),"致しますネ。",1,1,3,,,1
3370 WAIT 150 :GOSUB 3630
3380 PUT@A (X-1,Y-1)-(X1+1,Y1+1),DMY
3390 ERASE DMY
3400 RESUME 3230
3410 :
3420 *D_LOAD2 :'登録名データの読み込み
3430 X=X0 :Y=Y0 :X1=X+160 :Y1=Y+23 :GOSUB *K_SUB
3440 SYMBOL (X+5,Y+5),"名前DATAの読み込み",1,1,5,,,1
3450 I=2 :AD="" :A="PONPON.NAM" :GOSUB *K_SUB2
3460 OPEN "I",#1,"PONPON.NAM"
3470 INPUT #1,A :INPUT #1,ADD :'ドライブ読み込み
3480 INPUT #1,A :INPUT #1,A :FGO=VAL(A) :'互換モード
3490 INPUT #1,A :INPUT #1,ANA :'機種設定
3500 INPUT #1,A :'ダミー
3510 FOR I=1 TO 26 :'26までのデータを読む
3520 INPUT #1,A :INPUT #1,AN(I)
3530 NEXT
3540 CLOSE
3550 IF ADD="*" THEN ADD="" :AD=ADD
3560 IF ADD="CD" OR ADD="Q" OR ADD="Q:" THEN ADD="Q:" :AD=ADD
3570 IF ADD="A" OR ADD="A:" THEN ADD="A:" :AD=ADD
3580 IF ADD="B" OR ADD="B:" THEN ADD="B:" :AD=ADD
3590 RETURN
3600 :
3610 *D_SAVE :'データの書き込み
3620 KILL "PONPON.DAT" :'古いデータを消す
3630 OPEN "O",#1,"PONPON.DAT" :'全てのエラーで中断。注意!
3640 PRINT #1,"**飛んでけポンポン!**"
3650 PRINT #1,"--- GAME 1用 ---"
3660 FOR I=1 TO 20 :'GAME1
3670 PRINT #1,HI(I) :PRINT #1,ATEN(I)
3680 NEXT
3690 PRINT #1,"--- GAME 2用 ---"
3700 FOR I=1 TO 20 :'GAME2
3710 FOR I0=0 TO 2
3720 PRINT #1,HI2(I,I0)
3730 NEXT
3740 PRINT #1,ATEN2(I)
3750 NEXT
3760 CLOSE
3770 RETURN
3780 :
3790 '-----------------------------------
3800 *速度設定 :'FGO=1 互換モード
3810 IF ANA="QKS" THEN FF=0
3820 IF ANA="T-1" THEN FF=0 :'386/16MHz
3830 IF ANA="QKR" THEN FF=1
3840 IF ANA="T-2" THEN FF=1 :'486/33MHz
3850 IF ANA="OD" THEN FF=2
3860 IF ANA="PENT" THEN FF=3
3870 IF FGO THEN FF=0 :'互換モードONなら386速度
3880 RETURN
3890 :
3900 '-------------------------------------
3910 *サブメニュー
3920 X0=100 :Y0=260
3930 X=X0-5 :Y=Y0-5 :X1=X+170 :Y1=Y+190 :GOSUB *K_SUB1
3940 SYMBOL (X0+10,Y0+3),"* M E N U *",1,1,%10,,,5
3950 RESTORE 3950
3960 FOR I=0 TO 5 :'表示
3970 X=X0+10 :Y=Y0+I*25+25
3980 X1=X+140 :Y1=Y+20
3990 GOSUB *K_SUB1
4000 READ A
4010 SYMBOL (X0+15,Y0+I*25+27),A,1,1,%88,,,1
4020 NEXT
4030 DATA "ゲーム開始!","ポンポンとは?","ゲームの説明書","ガンの取扱説明書","動作速度について","残念ながらやめる"
4040 :
4050 NO=0 :'選択
4060 IF NO<0 THEN NO=5
4070 IF NO>5 THEN NO=0
4080 GOSUB *反転
4090 WAIT 15
4100 :
4110 A=INKEY$ :IF A<>"" THEN 4160 :'キ-入力
4120 I=PAD(1) :'パッド入力
4130 IF I=1 THEN A=CHR$(30)
4140 IF I=5 THEN A=CHR$(31)
4150 :
4160 IF A=CHR$(31) OR A=CHR$(28) THEN GOSUB *反転 :NO=NO+1 :GOTO 4060
4170 IF A=CHR$(30) OR A=CHR$(29) THEN GOSUB *反転 :NO=NO-1 :GOTO 4060
4180 IF A="R" OR A="r" THEN GOSUB *アバウトメッセージ :GOTO *サブメニュー
4190 IF A<>CHR$(13) AND PTRIG(1)<>1 THEN 4110
4200 RETURN
4210 :
4220 *反転
4230 X=X0+10 :Y=Y0+NO*25+25 :X1=X+140 :Y1=Y+20
4240 LINE (X,Y)-(X1,Y1),XOR,7,B
4250 LINE (X+1,Y+1)-(X1-1,Y1-1),XOR,7,B
4260 SYMBOL (X-15,Y+2),"・",1,1,4,,XOR
4270 SYMBOL (X+140,Y+2),"・",1,1,4,,XOR
4280 RETURN
4290 :
4300 '---------------------------------------------
4310 *表示S :'記録の更新
4320 ON FG GOTO *表示S1,*表示S2
4330 *表示S1 :'G1用
4340 HI(21)=TEN(0) :ATEN(21)="" :S=21 :'取り合えず最下位に記録
4350 FOR I=0 TO 2 :ATEN(21)=ATEN(21)+RIGHT$(" "+STR$(TEN(I)),7) :NEXT :'今回の記録を制作
4360 ATEN(21)=ATEN(21)+" "+LEFT$(ATEN(22)+" ",5)+" "+ATEN(0)
4370 FOR I=20 TO 1 STEP -1 :'順位入れ換え
4380 IF HI(I)<HI(I+1) THEN SWAP HI(I),HI(I+1) :SWAP ATEN(I),ATEN(I+1) :S=S-1
4390 NEXT
4400 RETURN
4410 :
4420 *表示S2 :'G2用
4430 CT=CT-1
4440 HI2(21,0)=LV :HI2(21,1)=CT :S=21 :'取り合えず最下位に記録
4450 A=" "+RIGHT$(" "+AKCNV$(STR$(LV)),6) :'今回の記録 LEVEL
4460 A=A+RIGHT$(" "+STR$(INT((LV/CT)*1000)/10),7) :'確率
4470 A=A+" "+RIGHT$(" "+AKCNV$(STR$(HI2(21,2))),6) :'Double
4480 A=A+" "+LEFT$(ATEN2(22)+" ",5)+" "+ATEN2(0) :'撃墜
4490 ATEN2(21)=A
4500 FOR I=20 TO 1 STEP -1 :'順位入れ換え
4510 IF HI2(I,0)<HI2(I+1,0) THEN SWAP HI2(I,0),HI2(I+1,0) :SWAP ATEN2(I),ATEN2(I+1) :S=S-1
4520 IF HI2(I,0)=HI2(I+1,0) THEN IF HI2(I,1)>HI2(I+1,1) THEN SWAP HI2(I,0),HI2(I+1,0) :SWAP ATEN2(I),ATEN2(I+1) :S=S-1
4530 NEXT
4540 RETURN
4550 :
4560 *表示 :'記録の表示
4570 SCREEN 0 :CLS :COLOR 7,,,4
4580 LINE (0,0)-(639,16),PSET,%4,BF
4590 LINE (400,440)-(639,475),PSET,%1,BF
4600 LINE (0,440)-(399,475),PSET,%7,BF
4610 LINE (0,418)-(639,439),PSET,%5,BF
4620 RESTORE 4620 :DATA 35,236,292,348,404,465
4630 FOR I=1 TO 6
4640 READ I0 :LINE (I0,0)-(I0,415),PSET,5,,&H4444
4650 NEXT
4660 LINE (0,397)-(639,397),PSET,6,,&H4444
4670 ON FG GOTO 4690,4810,4950
4680 '--G1--
4690 SYMBOL (420,450),"GAME-1 ( 十射 )",1,1,7,,,1,4
4700 SYMBOL (20,450),"弾を10回撃ってその合計点を競います。",1,1,6,,,1
4710 PRINT "順位 名 前 得点 High Low 撃墜 日 時"
4720 : IF S=1 THEN PCMPLAY SND5,127 :'1位の歓声
4730 IF S>1 AND S<11 THEN PCMPLAY SND2,127 :'10位以内拍手
4740 IF S>10 AND S<21 THEN PCMPLAY SND7,127 :'お疲れ
4750 FOR I=1 TO 20
4760 IF I=S THEN COLOR 6 ELSE COLOR 7 :'記録更新?
4770 PRINT RIGHT$(" "+STR$(I),3)+" "+ATEN(I) :'記録表示
4780 NEXT
4790 IF S=21 THEN COLOR 6 :PRINT "番外"+SPACE$(25)+ATEN(I)
4800 GOTO 5000
4810 '--G2--
4820 SYMBOL (420,450),"GAME-2 ( 遠射 )",1,1,7,,,1,4
4830 SYMBOL (10,450),"規定回数内に皿を割ります。何枚割ったかを競います",1,1,6,,,1
4840 PRINT "順位 名 前 Level 率 % Double 撃墜 日 時"
4850 IF S=1 THEN PCMPLAY SND5,127 :'1位の歓声
4860 IF S>1 AND S<11 THEN PCMPLAY SND2,127 :'10位以内拍手
4870 IF S>10 AND S<21 THEN PCMPLAY SND7,127 :'お疲れ
4880 FOR I=1 TO 20
4890 IF I=S THEN COLOR 6 ELSE COLOR 7 :'記録更新?
4900 PRINT RIGHT$(" "+STR$(I),3)+" "+ATEN2(I) :'記録表示
4910 NEXT
4920 IF S=21 THEN COLOR 6 :PRINT "番外"+SPACE$(25)+ATEN2(I)
4930 GOTO 5000
4940 :
4950 '--G3--
4960 :
4970 :
4980 :
4990 '** メニュー **
5000 COLOR 7 :LOCATE 0,22
5010 SYMBOL (10,420),"ゲーム選択 <Select> ・Start <Run> ・終了 <B>",1,1,7,,,1
5020 WAIT 50 :A=""
5030 LINE (550,419)-(639,439),PSET,%5,BF
5040 SYMBOL (480,422),"(Soft12)",1,1,%7
5050 SYMBOL (550,420),A,1,1,%7
5060 A=INKEY$
5070 IF A="S" OR A="s" THEN GOSUB *D_SAVE :A="Save" :GOTO 5030
5080 IF A="O" OR A="o" THEN FM=-(FM=0) :A="Out/"+STR$(FM) :GOTO 5030
5090 IF A="F" OR A="f" THEN FF=-(FF=0) :A="Frag/"+STR$(FF):GOTO 5030
5100 IF A="T" OR A="t" THEN FT=-(FT=0) :A="Test/"+STR$(FT):GOTO 5030
5110 IF A="1" THEN LOCATE 0,23 :PRINT "GAME1" :FG=1 :GOTO *表示
5120 IF A="2" THEN LOCATE 0,23 :PRINT "GAME2" :FG=2 :GOTO *表示
5130 IF A=CHR$(13) THEN I=1 :RETURN
5140 I=PTRIG(1) :'パッドの入力
5150 IF I=8 THEN FG=1-(FG=1) :GOTO *表示 :'ゲーム選択
5160 IF I=4 THEN I=1 :'RUN
5170 IF I=0 OR I>2 THEN 5060 :'1=実行 2=終了
5180 RETURN
5190 :
5200 *名前記入
5210 SCREEN 0 :CLS
5220 IF S>20 THEN RETURN :'番外
5230 SYMBOL (50,50),"ランキング"+AKCNV$(STR$(S))+"位",3,3,4,,,5
5240 LINE (40,40)-(500,105),PSET,5,B
5250 IF S=1 THEN PCMPLAY SND5,127 :'1位の歓声
5260 IF S>1 AND S<11 THEN PCMPLAY SND2,127 :'10位以内拍手
5270 LOCATE 0,10 :PRINT "おめでとうございます。"
5280 PRINT " 名前を登録致します。"
5290 INPUT ">",A
5300 AN(0)=A
5310 IF LEN(A)<>1 THEN 5340
5320 IF A>="A" AND A<="Z" THEN AN(0)=AN(ASC(A)-64)
5330 IF A>="a" AND A<="z" THEN AN(0)=AN(ASC(A)-96)
5340 PRINT AN(0) :WAIT 100
5350 A=LEFT$(AN(0)+SPACE$(30),24)
5360 IF FG=1 THEN ATEN(S)=A+ATEN(S)
5370 IF FG=2 THEN ATEN2(S)=A+ATEN2(S)
5380 RETURN
5390 :
5400 *タイトル
5410 CLS :SCREEN 0 :SCREEN@ 2
5420 LOAD@ "P_TITLE.TIF"
5430 RETURN
5440 :
5450 '----------------------------------------------
5460 *その場 :'各種設定等
5470 CX=300 :CY=300 :'的センターの座標
5480 '--- 弾 ----
5490 YS=60
5500 FOR I=1 TO 15 :'15段表示
5510 II=I-1 :OO=480
5520 CIRCLE (100,100),I,7,,,,F :'弾を描く
5530 GET@A (70,70)-(130,130),YA,II*OO :'読み込み
5540 NEXT
5550 '---- 旗 ----
5560 RESTORE 5560
5570 CONNECT (499,200)-(460,150)-(499,100),6 :'旗表示
5580 LINE (350,130)-(460,170),PSET,7,BF,&H0707070770707070
5590 SYMBOL (355,133),"大会本部より",1,1,4,,,3
5600 SYMBOL (355,152)," お知らせ",1,1,4,,,3
5610 CONNECT (500,210)-(500,90)-(610,150)-(500,210),%2
5620 FOR I=0 TO 3 :'メッセージ表示
5630 PAINT (510,150),0,%2 :PAINT (510,150),2,%2
5640 READ A :SYMBOL (505,130),A,1,1,7,,,5
5650 READ A :SYMBOL (505,150),A,1,1,7,,,5
5660 GET@A (350,90)-(630,210),HATA,I*4500 :'読み込み
5670 NEXT
5680 DATA "ゲーム"," 開始!","強風の為","一時中断!"
5690 DATA "ゲーム"," 終了!","ど真ん中"," 偉い!
5700 '---- 照準 ----
5710 FOR I=1 TO 0 STEP -1 :'2種類の照準を描く
5720 LINE (270,340)-(370,340),PSET,3+I*2
5730 LINE (320,290)-(320,390),PSET,3+I*2
5740 CIRCLE (320,340),20,0,,,,F
5750 IF I=0 THEN SYMBOL (330,290),"S.L.",1,1,3
5760 GET@A (250,280)-(390,400),SYO,I*2200 :'読み込み
5770 NEXT
5780 SX=100 :SY=100 :'照準の座標
5790 RETURN
5800 :
5810 *各種背景 :'動かない物の表示
5820 '---- 回数 ----
5830 LINE (450,10)-(630,40),PSET,7,B
5840 LINE (451,11)-(629,39),PSET,%7,BF
5850 SYMBOL (470,18),"第 回目の試技",1,1,5,,,5
5860 '---- 得点 ----
5870 IF FG=2 THEN 5900
5880 SYMBOL (120,27),"現在の得点: AVE.: H: L:",1,1,7,,,1
5890 SYMBOL (120,45),"順位: toTOP: toNEXT:",1,1,7,,,1
5900 '---- タイトル ----
5910 SYMBOL (0,40),"飛んでけ",1,1,6,,,1
5920 SYMBOL (0,60)," ポンポン!",1,1,6,,,1
5930 LINE (0,80)-(100,80),PSET,4
5940 FOR I=1 TO 100 :'タイトルを右上がりにする
5950 GET@A (I,40)-(I,150),TIT
5960 PUT@A (I,40-I/2)-(I,150-I/2),TIT
5970 NEXT
5980 SYMBOL (60,55),AVOL,1,1,5,,,3,3
5990 SYMBOL (0,465),"尋燐・ルナ",1,1,%5,,,1
6000 '---- 的 と土 ----
6010 ON FG GOTO 6020,6150 :'GAME2ならJMP
6020 LINE (CX-250,120)-(CX+100,CY+70),PSET,%5 :'吊り紐
6030 LINE (CX+250,120)-(CX-100,CY+70),PSET,%5
6040 CIRCLE (CX,CY),50,%4,,,,F :'的
6050 CIRCLE (CX,CY),30,%5,,,,F
6060 CIRCLE (CX,CY),10,%6,,,,F
6070 IF FM THEN CIRCLE (CX,CY),70,%5,,,,,,&H4444 :'OUTゾーン
6080 IF FM THEN CIRCLE (CX,CY),80,%5,,,,,,&H4444 :'OUTゾーン
6090 Y=370 :I=1 :'土
6100 Y=Y+I :LINE (0,Y+I)-(550,Y+I),PSET,%6
6110 I=I+1 :IF (Y+I)<480 THEN 6100
6120 SYMBOL (480,45),"G1 十射",1,1,6,,,1
6130 GOTO 6220
6140 '--/GAME2用/--
6150 LINE (CX-1,CY)-(CX+1,371),PSET,%4,B :'GAME2用
6160 CIRCLE (CX,CY),10,%6,,,,F
6170 PSET (CX,CY),%3
6180 Y=370 :I=1 :'土
6190 Y=Y+I :LINE (0,Y+I)-(550,Y+I),PSET,%7
6200 I=I+1 :IF (Y+I)<480 THEN 6190
6210 SYMBOL (480,45),"G2 遠射",1,1,6,,,1
6220 '---- 風力ゲージ ----
6230 SYMBOL (CX-180,2),"WIND",1,1,7,,,1
6240 FOR I=CX-100 TO CX+100 STEP 20
6250 IF I=CX THEN C=5 ELSE C=7
6260 LINE (I,0)-(I,20),PSET,C
6270 NEXT
6280 '---- 力ゲージ ----
6290 SYMBOL (570,50),"AIR",1,1,7,,,1,3
6300 SYMBOL (570,70),"Pressure",1,1,7,,,1
6310 FOR I=390 TO 90 STEP -20
6320 IF I<=150 THEN C=5 ELSE IF I>=310 THEN C=2 ELSE C=7
6330 LINE (580,I)-(630,I),PSET,C
6340 NEXT
6350 '---- 専用 ----
6360 IF FGO THEN A="互換モード" ELSE A="FASTモード"
6370 SYMBOL (560,440),A,1,1,6,,,5
6380 SYMBOL (560,460),ANA+"専用",1,1,6,,,5
6390 RETURN
6400 :
6410 '------------------------------------------------
6420 *各種前景 :'動く物(メーター)の表示
6430 '---- 風 ----
6440 W=INT(RND(1)*60)-30 :WC=CX-40
6450 LINE (CX-20+W,5)-(CX+20+W,15),PSET,2,BF
6460 GET@A (CX-40+W,5)-(CX+40+W,15),WIN
6470 '---- 力 ----
6480 LINE (600,390)-(620,470),PSET,4,BF
6490 GET@A (600,380)-(620,480),PW
6500 P=0 :PC=380 :POK=0
6510 RETURN
6520 :
6530 :
6540 :
6550 :
6560 '============ GAME 本 体 =============
6570 *開始
6580 'FF(0=QKS 1=QKR) / FM(OUTエリア) / FT(TESTモード) / FG(GAME番号)
6590 TEN(0)=0 :TEN(1)=0 :TEN(2)=200 :'総得点/HIGHスコア/LOWスコア
6600 ATEN(22)="" :HI(21)=-1 :'G1 撃墜シール /ワーク
6610 ATEN2(22)="" :'G2 撃墜
6620 FOR I=0 TO 2:HI2(21,I)=0 :NEXT :'G2 LEVEL/回数/Double
6630 LV=0 :CM=6 :CC=CM :'G2 レベル/回数/ワーク
6640 INTERVAL 1 :'1秒毎の割り込み
6650 ON INTERVAL GOSUB *風・力 :' >>風と力の強さ
6660 INTERVAL ON :'割り込み開始
6670 IF FT=0 THEN F=0 :GOSUB *合図 :'スタート合図/TEST中止
6680 CT=0 :'試技回数クリア
6690 IF FG=1 THEN GOSUB *本体1 :'ゲーム1本体
6700 IF FG=2 THEN GOSUB *本体2 :'ゲーム2本体
6710 IF FT=0 THEN F=2 :GOSUB *合図 :'終了合図
6720 INTERVAL OFF :'割り込み禁止
6730 RETURN :'メインに戻る
6740 :
6750 *本体1 :'GAME1本体
6760 CT=CT+1 :'試技回数を増やす
6770 GOSUB *総得点1 :'現在の点数表示
6780 IF CT>KAISU THEN ATEN(0)=DATE$+" "+TIME$ :RETURN :'終了なら日時を記録して戻る
6790 GOSUB *試技 :'試技数を表示
6800 IF CT>KAISU-2 AND HI(10)<TEN(0) THEN PCMPLAY SND8,127 :'応援
6810 IF FF THEN GOSUB *QKR専用 ELSE GOSUB *QKS専用
6820 GOTO 6760
6830 :
6840 *本体2 :'GAME2本体
6850 CT=CT+1 :CC=CC-1 :'試技回数を増やす
6860 GOSUB *総得点2 :'現在の点数表示
6870 IF CC<1 THEN ATEN2(0)=DATE$+" "+TIME$ :RETURN :'終了なら日時を記録して戻る
6880 GOSUB *試技 :'試技数を表示
6890 IF FF THEN GOSUB *QKR専用 ELSE GOSUB *QKS専用
6900 GOTO 6850
6910 :
6920 *QKR専用
6930 T=PTRIG(1) :'トリガの入力
6940 IF T=1 AND POK=1 THEN GOSUB *発射 :RETURN :'[A]なら発射
6950 IF T=2 AND POK=0 THEN GOSUB *力 :'[B]なら力
6960 FOR I=1 TO 15+FF*10 :'動きを遅くする
6970 T=PAD(1) :'パッドの入力
6980 NEXT
6990 IF POK=0 THEN 7020 :'SロックONならJMP
7000 SX=SX-(T=2)-(T=3)-(T=4)+(T=6)+(T=7)+(T=8) :'照準の座標を変える
7010 SY=SY+(T=1)+(T=2)-(T=4)-(T=5)-(T=6)+(T=8)
7020 IF FT THEN 7040 :'テストモード
7030 SX=SX+INT(RND(1)*3)-1 :SY=SY+INT(RND(1)*3)-1 :'手振れを起こす
7040 IF SX<10 THEN SX=10 :'照準が画面を出ないように調整
7050 IF SX>430 THEN SX=430
7060 IF SY<50 THEN SY=50
7070 IF SY>370 THEN SY=370
7080 PUT@A (SX,SY)-(SX+140,SY+120),SYO,,,,,POK*2200 :'照準を描く
7090 GOTO 6930 :'トリガ入力へ
7100 :
7110 *QKS専用
7120 T=PTRIG(1) :'トリガの入力
7130 IF T=1 AND POK=1 THEN GOSUB *発射 :RETURN :'[A]なら発射
7140 IF T=2 AND POK=0 THEN GOSUB *力 :T=T*333/333 :GOTO 7120 :'[B]なら力
7150 T=PAD(1) :'パッドの入力
7160 IF POK=0 THEN 7190 :'SロックONならJMP
7170 SX=SX+2*(-(T=2)-(T=3)-(T=4)+(T=6)+(T=7)+(T=8)) :'照準の座標を変える
7180 SY=SY+2*((T=1)+(T=2)-(T=4)-(T=5)-(T=6)+(T=8))
7190 SX=SX+INT(RND(1)*5)-2 :SY=SY+INT(RND(1)*5)-2 :'手振れを起こす
7200 IF SX<10 THEN SX=10 :'照準が画面を出ないように調整
7210 IF SX>430 THEN SX=430
7220 IF SY<50 THEN SY=50
7230 IF SY>370 THEN SY=370
7240 PUT@A (SX,SY)-(SX+140,SY+120),SYO,,,,,POK*2200 :'照準を描く
7250 GOTO 7120 :'トリガ入力へ
7260 :
7270 *力 :'力ゲージを動かす(力を溜める)
7280 P=P+.5! :IF P>300 THEN P=300 :POK=1 :'マンタンでロック解除
7290 PUT@A (600,PC-P)-(620,PC-P+100),PW
7300 RETURN
7310 :
7320 *風・力 :'1秒割り込みによる変化
7330 R=INT(RND(1)*30)-15 :'風の強さを変える
7340 W=W+R
7350 IF FT THEN W=0 :'テストモード
7360 PUT@A (WC+W,5)-(WC+W+80,15),WIN :'ゲージを動かす
7370 IF ABS(W)>80 THEN *強風 :'ゲージOVERで強風SUBへ
7380 IF FT THEN RETURN :'テストモード
7390 P=P-10 :'力を弱める
7400 IF P<0 THEN P=0
7410 PUT@A (600,PC-P)-(620,PC-P+100),PW :'ゲージを動かす
7420 IF P<100 THEN POK=0 :'力弱いとセーフディロック掛ける
7430 RETURN
7440 :
7450 *強風 :'強風時の処理
7460 INTERVAL OFF :'割り込み禁止
7470 PCMPLAY SND3,127 :'強風の音
7480 LINE (0,0)-(639,479),PRESET,,BF :'照準等を消す
7490 F=1 :GOSUB *合図 :'中止の旗出す
7500 W=INT(RND(1)*40)-20 :'新規に風/力をセット
7510 P=0 :GOSUB *風・力 :'ゲージを表示
7520 INTERVAL ON :'割り込み開始
7530 T=TEN(1) :'スコア表示時の調整
7540 IF FG=1 THEN GOSUB *試技 :GOSUB *総得点1 :'点、試技回数表示
7550 IF FG=2 THEN GOSUB *試技 :GOSUB *総得点2
7560 RETURN
7570 :
7580 *発射 :'弾の発射処理
7590 INTERVAL OFF :'割り込み禁止
7600 T=INT(RND(1)*6)+1 :'ガンの種類
7610 IF T>3 THEN T=1 :'玉の確率
7620 ON T GOTO 7630,7640,7650 :'飛んでいく音
7630 PCMPLAY SND1,127 :GOTO 7660 :'ピョーン
7640 PCMPLAY SND9,127 :GOTO 7660 :'GUN
7650 PCMPLAY SND10,127 :'HIT4
7660 LINE (SX,SY)-(SX+120,SY+120),PRESET,,BF :'照準消し
7670 YX=SX+40 :YY=SY+30 :'照準位置より弾の座標を計算
7680 FOR I=15 TO 1 STEP -1 :'弾飛ばす
7690 ON T GOTO 7700,7740,7780
7700 IF I>11 THEN YY=YY-8 :'弾のノーマルな飛び方-37
7710 IF I>9 THEN YY=YY-5
7720 IF I<6 THEN YY=YY+5
7730 GOTO 7800
7740 IF I>10 THEN YY=YY+1 :'弾(ガン)の飛び方
7750 IF I<8 THEN YY=YY-3
7760 IF I<4 THEN YY=YY-7
7770 GOTO 7800
7780 YY=YY-2 :'大砲の飛び方
7790 IF I>8 THEN YY=YY-1
7800 YX=YX+(W/10) :YY=YY+15-(P \ 20) :'風と力の影響を計算
7810 II=I-1
7820 PUT@A (YX,YY)-(YX+YS,YY+YS),YA,,,,,II*OO :'弾表示
7830 WAIT 10
7840 NEXT
7850 IF FS THEN IF INT(RND(1)*10)=0 THEN 7600 :'二段打ちの確率
7860 TX=YX+YS/2 :TY=YY+YS/2 :'着弾点計算
7870 SCREEN 1,0,3,1 :PSET (TX,TY),7 :'跡をマーク
7880 PSET (TX+1,TY),7 :PSET (TX-1,TY),7
7890 PSET (TX,TY+1),7 :PSET (TX,TY-1),7
7900 SCREEN 1,1,3,1
7910 LINE (YX,YY)-(YX+YS,YY+YS),PRESET,,BF :'弾消し
7920 IF FG=2 THEN *得点計算2
7930 :
7940 *得点計算1
7950 T=INT(SQR((CX-(TX))^2+(CY-(TY))^2)) :'得点計算
7960 IF T=0 THEN F=3 :GOSUB *合図 :GOTO 8010 :'ド真ん中に命中/歓声
7970 IF T>0 AND T<12 THEN PCMPLAY SND2,127 :'高得点時に拍手 80以上
7980 IF T>50 AND T<81 THEN PCMPLAY SND4,127 :'0点時に笑い
7990 IF T>70 THEN PCMPLAY SND6,127 :'大きく外れた 破壊
8000 WAIT 100
8010 IF T=0 THEN ATEN(22)=ATEN(22)+"*" :'撃墜シール
8020 IF T=1 THEN ATEN(22)=ATEN(22)+"O"
8030 IF T>1 AND T<7 THEN ATEN(22)=ATEN(22)+"+"
8040 IF T>80 THEN ATEN(22)=ATEN(22)+"-"
8050 WAIT 100
8060 IF T>80 THEN T=-T :GOTO *減点 :'大きく外れた
8070 IF T>70 THEN T=-50 :GOTO *減点 :'中外れ
8080 IF T=0 THEN T=150 :GOTO 8100 :'度真ん中 ボーナス点
8090 IF T<51 THEN T=102-T*2 ELSE T=0 :'得点計算
8100 SYMBOL (TX,TY),STR$(T),1,1,6,,,1 :'点表示
8110 GET@A (TX,TY)-(TX+64,TY+15),TN :'点数 配列にセット
8120 FOR I=0 TO 150 :'点移動表示
8130 PUT@A (TX+I,TY-I)-(TX+I+64,TY-I+15),TN :WAIT 2
8140 NEXT
8150 LINE (TX+150,TY-150)-(TX+214,TY-135),PRESET,,BF :'点消し
8160 TEN(0)=TEN(0)+T :'得点加算
8170 WAIT 100
8180 LINE (580,80)-(630,479),PRESET,,BF :'力消し/初期化
8190 P=0 :POK=0 : PUT@A (600,PC-P)-(620,PC-P+100),PW
8200 SX=INT(RND(1)*350)+100 :SY=100 :'照準の初期化
8210 INTERVAL ON
8220 RETURN
8230 :
8240 *減点
8250 IF T<-50 THEN PCMPLAY SND11,127 :'大きく外 救急車
8260 FOR I=1 TO 6
8270 SYMBOL (TX,TY),STR$(T),1,1,6,,XOR :'点表示
8280 WAIT 50
8290 NEXT
8300 GOTO 8160
8310 :
8320 *得点計算2 :'GAME2用
8330 T=INT(SQR((CX-(TX))^2+(CY-(TY))^2)) :'得点計算
8340 IF T>=45 THEN PCMPLAY SND13,127 :'危ない
8350 IF T>30 AND T<45 THEN PCMPLAY SND4,127 :'笑い
8360 IF T>10 AND T<13 THEN WAIT 50 :PCMPLAY SND12,127 :'おしい
8370 IF T>10 THEN WAIT 200 :GOTO 8730 :'外れ -- JMP
8380 PCMPLAY SND6,127 :'/破壊音
8390 SCREEN 1,0,3,1
8400 FOR I0=50 TO 300 STEP 50 :'破壊画像
8410 I1=I0/2
8420 FOR I=1 TO 250
8430 PSET(CX+RND(1)*I0-I1,CY+RND(1)*I0-I1),%6,XOR
8440 NEXT
8450 NEXT
8460 WAIT 100
8470 IF T<>0 THEN 8540 :'真ん中
8480 PCMPLAY SND4,127
8490 FOR I=1 TO 8
8500 SYMBOL (CX+20,CY+20),"ど.ど.ど真ん中ー!",1,1,7,,XOR,1 :WAIT 50
8510 NEXT
8520 LV=LV+5 :ATEN2(22)=ATEN2(22)+"*"
8530 HI2(21,2)=HI2(21.2!)+1
8540 IF CC<>CM-1 THEN 8590 :'ダブル
8550 FOR I=1 TO 5
8560 SYMBOL (CX+20,CY+20),"DOUBLE UP!",1,1,7,,XOR,1 :WAIT 50
8570 NEXT
8580 LV=LV+1 :HI2(21,2)=HI2(21,2)+1
8590 WAIT 100
8600 '的を書き直し
8610 LINE (0,85)-(550,479),PRESET,,BF
8620 LINE (CX-1,CY)-(CX+1,371),PSET,%4,B :'的
8630 CIRCLE (CX,CY),10,%6,,,,F
8640 Y=370 :I=1
8650 Y=Y+I :LINE (0,Y+I)-(550,Y+I),PSET,%7 :'土
8660 I=I+1 :IF (Y+I)<480 THEN 8650
8670 SYMBOL (0,465),"尋燐・ルナ",1,1,%5,,,1
8680 SCREEN 1,1,3,1
8690 LV=LV+1 :'レベルアップ
8700 IF LV>3 THEN CM=5
8710 CC=CM :'カウンタ戻す
8720 :
8730 LINE (580,80)-(630,479),PRESET,,BF :'力消し/初期化
8740 P=0 :POK=0 : PUT@A (600,PC-P)-(620,PC-P+100),PW
8750 SX=INT(RND(1)*350)+100 :SY=100 :'照準の初期化
8760 INTERVAL ON
8770 RETURN
8780 :
8790 *合図 :'合図の旗を振る
8800 INTERVAL OFF :'割り込み禁止
8810 IF F<>1 THEN PCMPLAY SND5,127 :'歓声
8820 FOR I=639 TO -300 STEP -1
8830 IF FF THEN WAIT 1 :'速ければWAIT
8840 PUT@A (I,90)-(I+280,210),HATA,,,,,F*4500
8850 NEXT
8860 INTERVAL ON :'割り込み開始
8870 RETURN
8880 :
8890 *試技 :'回数表示
8900 LINE (450,10)-(550,40),PRESET,,BF
8910 A=RIGHT$(" "+STR$(CT),2)
8920 SYMBOL (493,19),A,2,1,6,,,5
8930 RETURN
8940 :
8950 *総得点1 :'GAME1/現在の得点を表示
8960 IF CT=1 THEN RETURN
8970 SCREEN 1,0,3,1 :'画面設定 背景をアクティブに
8980 LINE (160,27)-(445,67),PRESET,,BF
8990 IF TEN(1)<T THEN TEN(1)=T :'LOWスコア更新
9000 IF TEN(2)>T THEN TEN(2)=T :'HIGHスコア更新
9010 SYMBOL (120,27),"現在の得点: AVE.: H: L:",1,1,7,,,1
9020 SYMBOL (208,27),STR$(TEN(0)),1,1,4 :'点数
9030 SYMBOL (295,27),STR$(INT(TEN(0)*10/(CT-1))/10),1,1,4 :'平均
9040 SYMBOL (348,27),STR$(TEN(1)),1,1,4 :'HIGH
9050 SYMBOL (400,27),STR$(TEN(2)),1,1,4 :'LOW
9060 :I=20 :'以下順位
9070 IF I<1 THEN I=1 ELSE IF TEN(0)>HI(I) THEN I=I-1 :GOTO 9070 ELSE I=I+1
9080 SYMBOL (120,45),"順位: toTOP: toNEXT:",1,1,7,,,1
9090 IF I=1 THEN SYMBOL (162,45),"TOP!",1,1,4 :GOTO 9120
9100 IF I=21 THEN SYMBOL (162,45),"番外",1,1,4 :GOTO 9120
9110 SYMBOL (162-16,45),AKCNV$(STR$(I))+"位",1,1,4
9120 :SYMBOL (274,45),STR$(HI(1)-TEN(0)),1,1,4 :'トップとの差
9130 :I=I-1 :IF I<2 THEN I=1
9140 SYMBOL (386,45),STR$(HI(I)-TEN(0)),1,1,4 :'次へ
9150 SCREEN 1,1,3,1 :'画面設定 前景をアクティブに
9160 RETURN
9170 :
9180 *総得点2 :'GAME2/現在の得点を表示
9190 SCREEN 1,0,3,1 :'画面設定 背景をアクティブに
9200 LINE (160,27)-(445,67),PRESET,,BF
9210 SYMBOL (150,27),"現在のレベル:"+STR$(LV),1,1,7,,,1
9220 SYMBOL (150,45),"残りのの回数:"+STR$(CC),1,1,7,,,1
9230 :I=20 :'以下順位
9240 IF I<1 THEN I=1 :GOTO 9290
9250 IF LV>HI2(I,0) THEN I=I-1 :GOTO 9240
9260 IF LV<HI2(I,0) THEN I=I+1 :GOTO 9290
9270 I=I+1
9280 :
9290 SYMBOL (300,27),"順位:",1,1,7,,,1
9300 IF I=1 THEN SYMBOL (350,27),"TOP!",1,1,4 :GOTO 9330
9310 IF I=21 THEN SYMBOL (350,27),"番外",1,1,4 :GOTO 9330
9320 SYMBOL (350,27),AKCNV$(STR$(I))+"位",1,1,4
9330 :SYMBOL (300,45),"TOP:"+STR$(HI2(1,0))+"/"+STR$(HI2(2,0))+"/"+STR$(HI2(3,0)),1,1,7,,,1
9340 SCREEN 1,1,3,1 :'画面設定 前景をアクティブに
9350 RETURN
9360 :
9370 '--------------------------------------
9380 *MENU2 :'ポンポンについて
9390 X0=30 :Y0=210
9400 X=X0 :Y=Y0 :X1=X+220 :Y1=Y+200 :GOSUB *K_SUB1
9410 X=X+10 :Y=Y+5 :X1=X+120 :Y1=Y+20 :GOSUB *K_SUB1
9420 SYMBOL (X+5,Y+2),"ポンポンとは?",1,1,%108,,,1
9430 A="我が家の子供は2才の頃、よく公園に落ちていたエアーガンの弾(BB弾)を拾ってきては遊んでいました。私が「それはなーに?」と質問したところ、返ってきた答えが「ポンポン」でした。"
9440 GOTO *MES_S
9450 :
9460 '--------------------------------------
9470 *MENU3 :'ゲームについて
9480 X0=50 :Y0=220
9490 X=X0 :Y=Y0 :X1=X+220 :Y1=Y+220 :GOSUB *K_SUB1
9500 X=X+10 :Y=Y+5 :X1=X+140 :Y1=Y+20 :GOSUB *K_SUB1
9510 SYMBOL (X+5,Y+2),"ゲームについて",1,1,%108,,,1
9520 A="本来5つほどのゲームが有ったのですが機種限定・著作権・未完成等により今回は2作品のみになっています。簡単ですが数人集まると燃えるかもしれません。今回の応募も友人のプッシュです。説明は各ステージにて。"
9530 GOTO *MES_S
9540 :
9550 '--------------------------------------
9560 *MENU4 :'ガンについて
9570 X0=70 :Y0=230
9580 X=X0 :Y=Y0 :X1=X+220 :Y1=Y+200 :GOSUB *K_SUB1
9590 X=X+10 :Y=Y+5 :X1=X+140 :Y1=Y+20 :GOSUB *K_SUB1
9600 SYMBOL (X+5,Y+2),"ガンの取扱説明書",1,1,%108,,,1
9610 A="ここで使うガンはエアーガンです。パッドの「B」ボタンでエアー圧を上げます。マンタンになるとセーフティロックが解除になり照準が動かせます。そして「A」ボタンで発射します。エアーは安全の為時間と共に抜けていきます。"
9620 GOSUB *MES_S
9630 X=X0 :Y=Y0 :X1=X+220 :Y1=Y+200 :GOSUB *K_SUB1
9640 X=X+10 :Y=Y+5 :X1=X+100 :Y1=Y+20 :GOSUB *K_SUB1
9650 SYMBOL (X+5,Y+2),"ガンの特性",1,1,%108,,,1
9660 A="使用している弾はプラスチックなので風と打ち出す力にかなり左右されます。またときたまホップしたり二段打ちになったりもしますが、これはたんなる見た目だけの問題で結果には影響いたしません。"
9670 GOTO *MES_S
9680 :
9690 '--------------------------------------
9700 *MENU5 :'速度について
9710 X0=90 :Y0=240
9720 X=X0 :Y=Y0 :X1=X+220 :Y1=Y+200 :GOSUB *K_SUB1
9730 X=X+10 :Y=Y+5 :X1=X+140 :Y1=Y+20 :GOSUB *K_SUB1
9740 SYMBOL (X+5,Y+2),"動作速度について",1,1,%108,,,1
9750 A="本来この手のソフトはスプライトを使うべきところなのですが、マシンパワーのお蔭でPUT@でもそこそこ動いてしまいました。しかしその弊害として機種による速度差の調整がとても難しくなってしまいました。"
9760 GOSUB *MES_S
9770 X=X0 :Y=Y0 :X1=X+220 :Y1=Y+200 :GOSUB *K_SUB1
9780 X=X+10 :Y=Y+5 :X1=X+140 :Y1=Y+20 :GOSUB *K_SUB1
9790 SYMBOL (X+5,Y+2),"速度調整について",1,1,%108,,,1
9800 A="設定には2種類有ります。 1.互換モードにする。 2.各機種に合わせる ですが各機種全てを調整できる筈もなく機種により難易度が変わってしまいました。MAでベストになっています。"
9810 GOTO *MES_S
9820 :
9830 '--------------------------------------
9840 *MES_S
9850 I0=INT(LEN(A)/26)
9860 FOR I=0 TO I0
9870 SYMBOL (X0+5,Y+30+I*20),MID$(A,1+26*I,26),1,1,%57,,,1
9880 NEXT
9890 WAIT 10
9900 IF PTRIG(1)<>1 AND INKEY$="" THEN 9900
9910 RETURN
9920 :
9930 '--------------------------------------
9940 *M_終了 :'終了
9950 X0=170 :Y0=370
9960 X=X0 :Y=Y0 :X1=X+230 :Y1=Y+80 :GOSUB *K_SUB1
9970 IF F THEN PCMPLAY SND7,127 :'おつかれ
9980 SYMBOL (X0+5,Y0+20),"ま た ね ー !",2,2,%99,,,1
9990 SYMBOL (X0+60,Y0+55),"ヾ(^_^) バーイ",1,1,%125,,,1
10000 RETURN
10010 :
10020 '------------------------------------
10030 *アバウトメッセージ
10040 FOR X=0 TO 500 STEP 20 :WAIT 1 :Y=50+X/10 : LINE (X,Y)-(X+30,Y+80),PRESET,,BF :NEXT
10050 FOR X=500 TO 150 STEP -20 :WAIT 1 :Y=100+70-X/10 : LINE (X,Y)-(X+30,Y+80),PRESET,,BF :NEXT
10060 FOR X=150 TO 500 STEP 20 :WAIT 1 :Y=160+X/10 : LINE (X,Y)-(X+30,Y+80),PRESET,,BF :NEXT
10070 FOR X=500 TO 150 STEP -20 :WAIT 1 :Y=270-X/10 : LINE (X,Y)-(X+30,Y+80),PRESET,,BF :NEXT
10080 FOR X=150 TO 500 STEP 20 :WAIT 1 :Y=260+X/10 : LINE (X,Y)-(X+30,Y+80),PRESET,,BF :NEXT
10090 RESTORE 10090 :X=220 :Y=120 :C=100
10100 READ A :IF A="END" THEN A=INPUT$(1) :RETURN
10110 SYMBOL (X,Y),A,1,1,%C,,,5
10120 Y=Y+20 :C=C+1 :GOTO 10100
10130 :
10140 DATA "アバウト各局の皆さーん!",""
10150 DATA "Oo。(^。^)y-゚゚ お元気ですかー。"
10160 DATA "今年も移動運用しましょうねー。"
10170 DATA "海に山に各局の家に...."
10180 DATA "宜しくネ(^_^)",""
10190 DATA " from JG0QKR"
10200 DATA " and JI0FLS"
10210 DATA " 紀之"
10220 DATA " 雅之"
10230 DATA " 佳奈"
10240 DATA "END"
10250 :
10260 '======================= E N D =============================